Automated execution of computer programs is desirable to perform maintenance, inventory or other routine and/or repetitive tasks on a computer system. Automating such tasks is especially advantageous in a networked environment or otherwise in a facility having a large number of workstations for which the given tasks must be performed. Often, manual execution of such tasks is resource intensive, cumbersome and unreliable.
One method of executing computer programs automatically is to use a scheduling computer program, such as the Windows Task Scheduler program provided by Microsoft Windows XP computer operating system, published by Microsoft Corporation, located in Redmond, Wash. On a given workstation, the Windows Task Scheduler permits a user to schedule the automated execution of a program according to a calendar based execution schedule, including configuring recurring execution of the particular program according to a calendar based pattern. On UNIX based workstations, users may utilize the CRON functionality to automate task/program execution. Further, other programs provide calendar based scheduling of tasks. For example, Microsoft Outlook, published by Microsoft Corporation, located in Redmond, Wash., permits a user to schedule reminders which display in a reminder window, or otherwise activate an alert, on the computer display screen at the appointed time. Outlook checks for pending reminders, i.e. reminders that would have been displayed had outlook been running, each time it is started. Accordingly, if the computer is turned off at the appointed time, Outlook will display any pending reminders the next time Outlook is executed.
One problem with these methods for scheduling is that they are calendar based. Accordingly, they utilize absolute references when specifying a schedule, including specification of recurrence patterns. Calendar based scheduling may work well for informational purposes, such as displaying alerts or reminders, but, if used to control program or task execution, such scheduling may result in anomalous execution under certain circumstances, such as when the computer is turned off, busy or otherwise unavailable to execute the scheduled task. For example, if the task is scheduled to execute every Tuesday and the computer is turned off for 3 weeks, if the computer is next powered up on a Wednesday, the prior automation program may execute the three missed executions immediately, similar to the way Microsoft Outlook handles pending reminders, which may be unacceptable depending upon the impact on the system load or other resources. Alternatively, the automation program may not execute the task at all until the next Tuesday comes around, thereby incurring additional, and perhaps unacceptable, delay in executing the task.
Accordingly, there is a need for a system and method of automated task/program execution management that is not reliant on absolute references for scheduling the execution of programs and flexibly handles potential operating conditions.